﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using System.Configuration;

namespace ReclutamientoCosea
{
	/// <summary>
	/// Interaction logic for wAdministraOT.xaml
	/// </summary>
	public partial class wAdministraOT : Window
	{
        private static AppSettingsReader settings = new AppSettingsReader();
        private string _numeroOrden = "";
        private TransaccionOT tot = new TransaccionOT();

        private string _idOrden = "";

        public string IdOrden
        {
            get { return _idOrden; }
            set { _idOrden = value; }
        }

        public string NumeroOrden
        {
            get { return _numeroOrden; }
            set
            { 
                _numeroOrden = value;
                lblOrden.Content = _numeroOrden;
            }
        }

		public wAdministraOT()
		{
			this.InitializeComponent();
            this.Loaded +=new RoutedEventHandler(wAdministraOT_Loaded);			
		}

        void  wAdministraOT_Loaded(object sender, RoutedEventArgs e)
        {
 	        CargaCombos ();
        }

        private void btnAceptar_Click(object sender, RoutedEventArgs e)
        {
            guardaEstado();
        }

        private void guardaEstado()
        {
            if (cmbAsignado.Text.Trim() == string.Empty)
            {
                MessageBox.Show("No se puede cambiar de estado sin un usuario asignado a la Orden de trabajo", 
                    "Reclutamiento Cosea", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (cmbEstado.Text.Trim() == string.Empty)
            {
                MessageBox.Show("No hay estado seleccionado, no se puede actualizar asi.",
                    "Reclutamiento Cosea", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
            string strSQL = "";
            string strFinal = "";            
            string strEstado = cmbEstado.Value.ToString ();
            string strUsuario = cmbAsignado.Value.ToString();
            try
            {
                bd.bdConecta();
                strSQL = "exec SPInsTransaccionOT2 {0},{1},'{2}','{3}','{4}' ";
                strFinal = string.Format(strSQL, _numeroOrden, strEstado, strUsuario, 
                    Utilerias.ConvertRichTextBoxContentsToString(txtComentarios),_idOrden);
                bd.bdEjecuta(strFinal);

                strSQL = "update OrdenTrabajo set status = {0} where idorden = '{1}' ";
                strFinal = string.Format(strSQL, strEstado, _idOrden);
                bd.bdEjecuta(strFinal);

                MessageBox.Show("Estado actualizado");
                this.Close();
            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }
            finally
            {
                bd.bdCierra();
            }
        }

        private void btnCancelar_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        public void CargaEstado()
        {
            bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
            string strSQL = "";
            string strFinal = "";            
            try
            {
                bd.bdConecta();
                strSQL = "select t.*,e.descripcion, u.username, p.nombre1 from TransaccionOT t  ";
                strSQL += "inner join EstadoOT e ";
                strSQL += "on t.estado = e.estado ";                
                strSQL += "inner join Usuario u ";
                strSQL += "on t.idusuario = u.idusuario ";
                strSQL += "inner join Persona p ";
                strSQL += "on u.idpersona = p.idpersona ";
                strSQL += "where numero = {0} ";
                strSQL += "order by Fecha desc ";

                strFinal = string.Format(strSQL, _numeroOrden);

                DataSet ds = bd.dataSetConsulta(strFinal, "ot");               
                DataRow dr = ds.Tables["ot"].Rows[0];
                tot.idordentransaccion = dr["idordentransaccion"].ToString();
                tot.numero = dr["numero"].ToString();
                tot.descripcion = dr["descripcion"].ToString();
                tot.estado = dr["estado"].ToString();
                tot.fecha = DateTime.Parse(dr["fecha"].ToString());
                tot.idusuario = dr["idusuario"].ToString();
                tot.username = dr["username"].ToString();
                tot.comentario = dr["comentario"].ToString();
                tot.nombre = dr["nombre1"].ToString();

                ponDatos();
            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }
            finally
            {
                bd.bdCierra();
            }
        }

        private void ponDatos()
        {
            cmbEstado.Text = tot.estado;
            //cmbAsignado.Text = tot.username;
            cmbAsignado.Text = tot.nombre;
            FlowDocument mcFlowDoc = new FlowDocument();
            Paragraph para = new Paragraph();
            para.Inlines.Add(new Run(tot.comentario));
            mcFlowDoc.Blocks.Add(para);
            txtComentarios.Document = mcFlowDoc;
        }

        private void CargaCombos()
        {
            bdSQLServer bd = new bdSQLServer((string)settings.GetValue("cadenaconexion", typeof(string)));
            string strSQL = "";
            try
            {
                bd.bdConecta();
                strSQL = "select u.idusuario,username,p.nombre1 from Usuario u inner join Persona p on u.idpersona = p.idpersona inner join reclutadores r on u.idusuario = r.idusuario ; ";
                strSQL += "select estado,descripcion from EstadoOt order by estado asc; ";

                DataSet ds = bd.dataSetConsulta(strSQL, "rr");


                cmbAsignado.ItemsProvider.ItemsSource = ds.Tables[0].DefaultView;
                cmbAsignado.ItemsProvider.DisplayMemberPath = "nombre1";
                cmbAsignado.ItemsProvider.ValuePath = "idusuario";

                cmbEstado.ItemsProvider.ItemsSource = ds.Tables[1].DefaultView;
                cmbEstado.ItemsProvider.DisplayMemberPath = "descripcion";
                cmbEstado.ItemsProvider.ValuePath = "estado";


            }
            catch (Exception ex)
            {
                wExcepcionesSistema wError = new wExcepcionesSistema();
                wError.txtExcepcion.Text = ex.Message;
                wError.ShowDialog();
            }
            finally
            {
                bd.bdCierra();
            }

        }

        private void cmbEstado_DropDownClosed(object sender, RoutedEventArgs e)
        {
            nuevoEstado();
        }

        private void nuevoEstado()
        {
            cmbAsignado.Text = string.Empty;
            txtComentarios.Document.Blocks.Clear();
        }

	}
}